home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / misc / felix / source / flxclasses.h < prev    next >
C/C++ Source or Header  |  1999-01-25  |  3KB  |  105 lines

  1. //*************************************************************************//
  2. // Filename:    mzclasses.h
  3. // Autor:       Christian Taulien of Strange Intelligence
  4. // Purpose:     definition of used classes
  5. // Creation:    18. März 1998
  6. //*************************************************************************//
  7. #ifndef FLXCLASSES_H
  8. #define FLXCLASSES_H
  9.  
  10. #include "funcs.h"
  11. #include <exec/types.h>
  12. #include <exec/nodes.h>
  13. #include <exec/lists.h>
  14. #include <dos/notify.h>
  15.  
  16. // *** Flag definitions
  17. #define FLXFLAG_INACTIVE     (1L<<0)  // set if the watch is disabled
  18. #define FLXFLAG_HIDDEN       (1L<<1)  // set if the textwindow is hidden
  19. #define FLXFLAG_MODIFIED     (1L<<2)  // set if the file was modified
  20. #define FLXFLAG_PROCESSED    (1L<<31) // used in checkAccess()
  21.  
  22. #define FLXMASK_DEFAULT  0
  23.  
  24. #define SIFC_SETBIT(dest, flag, bitmask)\
  25.                     dest = (flag) ? (dest) | (bitmask) : (dest) & ~(bitmask);
  26.  
  27. extern char *createNameFromInstance(void);
  28.  
  29. class FLXWatchListC;
  30. //*************************************************************************//
  31. //.klasse
  32. //KLASSENNAME   : FLXNodeC
  33. //VERSION       : 18. März 1998
  34. //AUTOR         : Taulien
  35. //AUFGABE       : Eine Klasse zur Verwaltung eines Watches
  36. //DOKUMENTATION : -
  37. //BEMERKUNGEN   : -
  38. //AENDERUNGEN   : -
  39. //*************************************************************************//
  40. class FLXNodeC : public struct Node
  41. {
  42.   friend class FLXWatchListC;
  43. private:
  44.   // ## datamembers
  45.   ULONG  m_ulFlags;       // see FLXFLAG_#? flags above
  46.  
  47.   // ## methods
  48.   FLXNodeC(struct APIInstance *arg_poInstance, FLXWatchListC *arg_poWatchList);
  49.  
  50.   void setProcessed(BOOL arg_bFlag) { SIFC_SETBIT(m_ulFlags, arg_bFlag, FLXFLAG_PROCESSED); };
  51.   BOOL isProcessed(void) const { return m_ulFlags & FLXFLAG_PROCESSED; };
  52.  
  53. public:
  54.   // ## datamebers
  55.   struct APIInstance   *m_poAPIInstance; // to recognize the msg
  56.   struct NotifyRequest *m_poNotifyReq;   // for the
  57.  
  58.   // ## methods
  59.   ~FLXNodeC();
  60.  
  61.   void setInactive(BOOL arg_bFlag) { SIFC_SETBIT(m_ulFlags, arg_bFlag, FLXFLAG_INACTIVE); };
  62.   void setHidden(BOOL arg_bFlag)   { SIFC_SETBIT(m_ulFlags, arg_bFlag, FLXFLAG_HIDDEN);   };
  63.   void setModified(BOOL arg_bFlag) { SIFC_SETBIT(m_ulFlags, arg_bFlag, FLXFLAG_MODIFIED); };
  64.  
  65.   BOOL isInactive(void) const { return m_ulFlags & FLXFLAG_INACTIVE; };
  66.   BOOL isHidden  (void) const { return m_ulFlags & FLXFLAG_HIDDEN;   };
  67.   BOOL isModified(void) const { return m_ulFlags & FLXFLAG_MODIFIED; };
  68.  
  69.   char *getFileName(void) { return ln_Name; };
  70.   FLXNodeC *getNext(void);
  71.   FLXNodeC *getPrev(void);
  72.   void reloadFile(void);
  73. };
  74.  
  75. //*************************************************************************//
  76. //.klasse
  77. //KLASSENNAME   : FLXWatchListC
  78. //VERSION       : 18. März 1998
  79. //AUTOR         : Taulien
  80. //AUFGABE       : Eine Klasse für die Verwaltung der Watches
  81. //DOKUMENTATION : -
  82. //BEMERKUNGEN   : -
  83. //AENDERUNGEN   : -
  84. //*************************************************************************//
  85. class FLXWatchListC : public struct List
  86. {
  87. private:
  88.   struct MsgPort *m_poMsgPort;
  89. public:
  90.   FLXWatchListC();
  91.   ~FLXWatchListC();
  92.  
  93.   struct MsgPort *getMsgPort(void) { return m_poMsgPort; };
  94.  
  95.   BOOL addWatch     (struct APIInstance *arg_poInstance);
  96.   FLXNodeC *findWatch(struct APIInstance *arg_poInstance);
  97.   FLXNodeC *getFirst(void) { return (FLXNodeC *) lh_Head; };
  98.   int getSize(void);
  99.   void checkAccess(void);
  100.  
  101.   FLXNodeC *operator[](int arg_iIndex);
  102. };
  103.  
  104. #endif // FLXCLASSES_H
  105.